<?php
/** Clasa pentru configuratia generala a aplicatiei;
 * @package AMFramework
 * @subpackage Data_Pack
 * @author Marcu Alexandru
 * @version 1.0 $Build 305b  
 */
class Amfw_Document_Macros extends Amfw_Object
{
	protected function getContent() {
		//global $debug;
		
		// Descarca si intoarce din View codul Html (contentul)
		// Stabilim in ce aplicatie ne aflam
		//$app = $this->_getApplication();
		$app = Amfw_Application::_();
		$controller = Amfw_Request::getv('controller',$app->controller);
		
		//Debugging
		$msg = ($controller == $app->controller) ? 'In '.get_class($this).'::getContent() s-a folosit controllerul implicit' :
			'In '.get_class($this).'::getContent() s-a folosit controllerul '. $controller.' luat din request';
		Amfw_Debug::toJournal($msg);
		
		$class = $app->prefix.'_View_'.ucfirst($controller);
		$view = new $class();
		
		return $view->getHtml();
	}
	
	//TODO: Useless, no longer used since fetchApplication was created (DELETE ME)
	private function _getApplication() {
		global $framework;
		//global $debug;
		
		// ...dupa initializarea configului
		$apps = $framework->getConfig('applications');
		$app0 = array_shift($apps);
		
		// ...dupa routerul de aplicatie
		$req = Amfw_Request::getv('application',null);
		if(isset( $req )) {		// Aplicatia se preia din request
			//$debug->logWrite('In '.get_class($this).'::_getApplication() <b>aplicatia s-a preluat din request</b>');
			foreach($apps as $app) {
				if(strtolower($app->name) == strtolower($req)):
					return $app;
					endif;
			}
		} else {				// Aplicatia nu este preluata din request
			//$debug->logWrite('In '.get_class($this).'::_getApplication() <b>aplicatia s-a preluat implicit: $app0</b>');
			return $app0;
		}
	} 
	
/*	metoda functionala dar codul este putin ciudat
 * 
 * protected function getContent()
	{
		//TODO: Codul e oarecum ambiguu
		$html = '';
		global $framework;
		
		$apps = $framework->getConfig('applications');
		$defaultApp = array_shift($apps);
		$prefix = '';
		$x = Amfw_Request::getv('application',null);
		if(isset($x)) {
			//echo 'here like an idiot';
			$appr = Amfw_Request::getv('application');
			foreach($apps as $app) {
				if($app->name == $appr) {
					//echo $app->name.'   '.$appr;
					$prefix = $app->prefix;
					$otherApp = $app;
					break;
				}
			}
			$tmp = Amfw_Request::getv('controller',$otherApp->controller);
		}
		else 
		{
			///$app = $defaultApp;
			$prefix = $defaultApp->prefix;
			$tmp = Amfw_Request::getv('controller',$defaultApp->controller);
		}

		$class = $prefix.'_View_'.ucfirst( $tmp );
		$view = new $class();
		$html = $view->getHtml();

		//TODO: HTML: PARSE CONTENT (AICI sau in Parserul final (TBD))
		// Transformarea fwML (ex: {<button:{name="foo"}>} in HTML (<input type="button" value="foo">);
		
		return $html;
	} */
	
	protected function getDoctype()
	{
		// Exemplu bun de caz in care `interfata` Macro-ului 
		// este diferita de rezultatul din getter
		return $this->_doctype;
	}
}